package com.ydh.company.utils;

import com.ydh.company.config.SystemConfig;
import com.ydh.company.exception.UploadException;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

public class UploadUtil {

    public static void upload(String headerName,MultipartFile header,SystemConfig systemConfig) throws IOException {


            System.out.println(headerName);
            if (headerName.isEmpty()){
                System.out.println("不能为空");
            }
            // 上传的文件名
            String originalFilename = header.getOriginalFilename();
            // 处理名字
            // 生成一个UUID的名字
            String uniqueFileName = MyStringUtil.getUniqueFileName();
            // 获取当前文件的后缀
            String ext = MyStringUtil.getExt(originalFilename);
            // 很可能上传后缀有问题, 我们两种解决方案
            // 1. 直接抛出异常
            // 2. 直接给定一个默认的后缀
            ext = MyStringUtil.defaultExt(ext, systemConfig.getDefaultExt());
            // 限制文件上传的后缀
            String allowExts = systemConfig.getAllowExts();
            if (!allowExts.contains(ext)) {
                // 抛出错误
                throw new UploadException(4001,"后缀不允许!只允许上传:"+allowExts);
            }
            // 准备一个上传的路径
            String uploadPath = systemConfig.getUploadPath();
            // 处理文件存放的目录 : 日期目录  /2020/04/09/文件
            // 如果一个文件夹下面存放的文件数量过多, 查询起来效率偏慢
            String dateDir = MyStringUtil.getDateDir(uploadPath);

            // 抽象出上传的文件对象
            File uploadFile = new File(uploadPath+"/"+dateDir,uniqueFileName+"."+ext);
            // 上传
            header.transferTo(uploadFile);


    }
}
